<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>字符串</title>
</head>

<body>
  <script>
    // 1. 封装一个函数实现字符串翻转。

    // var str ="dcba"
    // function fn(a,b) {
    //   var res = str.split(a).reverse().join(b)
    //   return res;
    // }
    // console.log(fn("",""));

    // 2. 字符串 digite = "0123456789", 把后 5 个字符分割出来， 返回个单字符的数组,
    //  注意， 返回数组里面的数字是字符串类型
    //期望结果:['5', '6', '7', '8', '9']

    // var digite = "0123456789";
    // var str = digite.slice(5,10);
    // console.log(str.split(""));

    // 3.已知有字符串 foo=”get-element-by-id”,写一个 function 
    // 将其转化成驼峰表示法”getElementById”.

    // foo = "get-element-by-id"
    // var arr = foo.split("");//将字符串切割成数组
    // function fn(a) {
    //   for (var i = 0; i < arr.length; i++) {
    //     if (arr[i] === a) {
    //       arr.splice(i, 1);//当数组内数据为"-"时，将其删除。
    //       arr[i] = arr[i].toUpperCase();//因为"-"被删除，此时的arr[i]就是"-"后的首字母改成大写
    //     }
    //   }
    //   return arr.join("")// 将数组拼接成字符串
    // }
    // console.log(fn("-"));


    // 4.定义一个函数,将"今天是什么鬼天气，这么热，明天要去游泳！"里面所有的"天"的下标输出

    // var str = "今天是什么鬼天气，这么热，明天要去游泳！"
    // var arr = []
    // function fn(a) {
    //   for (var i = 0; i < str.length; i++) {
    //     if (str[i] === a) {
    //       arr.push(i)
    //     }
    //   }
    //   return arr
    // }
    // console.log(fn("天"));

    // 5.定义一个函数,将"今天是什么鬼天气，这么热，明天要去游泳！"里面的所有"天"替换成"日"

    // var str = "今天是什么鬼天气，这么热，明天要去游泳！"
    // function fn(a,b) {
    //   str = str.split(a).join(b);
    //   return str;
    // }
    // console.log(fn("天","日"));

    // 6.解析 URL Params 为对象，例如(https://www.baidu.com/s?ie=UTF-8&wd=letcode)得到{ie: 'UTF-8', wd: 'letcode', url: 'https://www.baidu.com/s'}
    var url = "https://www.baidu.com/s?ie=UTF-8&wd=letcode";

    // 7.查找字符串中(abbcccddddd)出现最多的字符和个数(Tips:要先统计每个字符出现的次数)

    var str = "abbcccddddd"
    var obj = {}//创建一个空对象
    for (var i = 0; i < str.length; i++) {
      k = str[i]//将字符串的数据赋值给键名
      if (obj[k]) {
        obj[k] += 1;//假如obj[k]键值存在，则统计次数+1
      } else {
        obj[k] = 1;//假如obj[k]键值不存在，则添加到对象当中
      }
    }
    console.log(obj);
    var arr = Object.values(obj);//将对象里面的值添加到新的数组里面
    var max = arr[0];//设索引为0是数组的最大值
    for (var i = 1; i < arr.length; i++) {
      max = arr[i] > max ? arr[i] : max;//拿数组的数据与arr[0]进行比较，假如比它大则输出arr[i]，否则输出arr[0]
    }
    for (var k in obj) {
      if (obj[k] === max) {
        console.log(k);//寻找当值为5时的键名
      }
    }
    console.log(k, max);//最后打印出最多的字符和出现的个数
  </script>
</body>

</html>